// 封装自定义的axios方法
import axios from 'axios'
import {Toast} from "vant" // 过度动漫需要的
import router from "../router" //过度动漫需要的
// 判断当前的运行环境process.env.NODE_ENV
// 判断isDve为真--npm run serve
// isDve为假的 非开发环境（测试环境，生产环境），npm run build
const isDve = process.env.NODE_ENV === 'development'
let token = "";
const request = axios.create({
  // 根据环境不同设置不用的baseURL
  // baseURL: 'http://localhost:3333/api'
  // const url = `http://localhost:3000/song/url?id=33894312&proxy=http://121.196.226.246:84`
  baseURL: isDve ? 'http://112.126.61.180:3333/api' : 'http://112.126.61.180:3333/api'
})
axios.defaults.headers.common['token'] = token;  // 设置请求头里面的 token 
axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded'; // 设置POST提交数据的文档类型编码

// 过度动漫的函数
function showLoading(){
  Toast.clear();
  Toast.loading({
      message: "加载中...",
      forbidClick: true,
      loadingType: "spinner",
      duration: 10000
  });
}

function success(msg){
  Toast.clear();
  Toast.success({
      message:msg,
      duration:600
  });
}

function fail(msg){
  Toast.clear();
  Toast.fail({
      message:msg,
      duration:600
  });
}
// 请求拦截器-所有的请求开始之前先到次数
request.interceptors.request.use((config) => {
  // 可以设置加载的动漫效果展示
  // 在必要的路由设置一些额外的参数---token信息携带放在此处
  token = sessionStorage.token || token;
  config.headers.token = token;   // 客户端发送 token  到服务器  绑定到 req.headers
  // console.log(config)
  showLoading();
  return config
}, (error) => {
  fail("请求失败")
  return Promise.reject(error)
})

// 响应拦截器---所有请求的相应先到此时
request.interceptors.response.use((response) => {
  // 可以设置加载的动画效果的隐藏
  // console.log(response.data)
  setTimeout(()=>{
    // 没有type  直接就是 success 
    if(response.data.type===1){  // 1 表示 成功  0 表示失败  
        success(response.data.msg||'请求数据成功');
    }else{
        if(response.data.type===0){
            fail(response.data.msg||'请求数据失败');
        }else{
            success(response.data.msg||'请求数据成功');
        }
    }

    if(response.data.code=="3000"){
        router.push({name:"login"})
    }
    
},300);
  return response
}, (error) => {
  fail("响应失败")
  return Promise.reject(error)
})
export default request
